/**
 * @param {number[]} nums
 * @return {number[]}
 */
var singleNumbers = function (nums) {
	let num1 = 0, num2 = 0;
	let temp = 0;
	// 得到所有数字的异或结果
	nums.forEach(item => temp ^= item)
	// 得到最低位第一位不相同的数字,其余位置均为0
	let mask = temp ^ (temp & (temp - 1));
	// 分组异或
	nums.forEach(item => {
		if ((mask & item) === 0) {
			num1 ^= item;
		} else {
			num2 ^= item;
		}
	})
	return [num1, num2];
};